#ifndef __CAMERA_H__
#define __CAMERA_H__

#include "glm_use.h"

class Camera
{
public:
    Camera(float viewPortSizeX, float viewPortSizeY, glm::vec3 cameraPos = glm::vec3(0.0, 0.0, 3.0), glm::vec3 cameraFront = glm::vec3(0.0, 0.0, -1.0), glm::vec3 cameraUp = glm::vec3(0.0, 1.0, 0.0));
    void reset();
    void setSpeed(float speed);
    void moveForward();
    void moveBackward();
    void moveLeft();
    void moveRight();
    void moveUp();
    void moveDown();
    void mouseMove(float sensitivity, float xoffset, float yoffset);
    void mouseScroll(float xoffset, float yoffset);
    glm::mat4 lookAt() const;
    glm::mat4 projection() const;

private:
    float speed, yaw, pitch, fov;
    glm::vec3 Pos;
    glm::vec3 Front;
    glm::vec3 Up;
    float viewPx, viewPy;
};
#endif